package d0908;
import java.util.*;
import java.util.function.Consumer;

public class 集合 {
    public static void main(String[] args) {
        // 有序, 可重复
        List list = new ArrayList();
        list.add(100);
        list.add('男');
        list.add(true);
        list.add(0, '女');
        list.add(new Date());
        System.out.println(list);
        // 获取元素
        System.out.println(list.get(1));

        Object obj = list.get(4);
        if(obj instanceof Date) {
            Date d = (Date) obj;
            System.out.println(d.getTime());
        }

        // 泛型: 对对象可以操作的元素类型进行设置的语法
        List<Date> list2 = new ArrayList<Date>();
        // list2.add(100); // 元素类型错误
        list2.add(new Date());
        list2.add(new Date());
        list2.add(new Date());
        list2.add(new Date(10000000000l));
        list2.add(new Date(0));
        System.out.println(list2);

        System.out.println("=========普通for循环");
        for (int i = 0; i < list2.size(); i++) {
            System.out.println(list2.get(i));
        }

        System.out.println("=========增强for循环    不能替换元素");
        for( Date d : list2) {
            d = new Date(9999);
            System.out.println(d);
        }
        System.out.println(list2);

        System.out.println("=========迭代器循环");
        // 获取迭代器
        Iterator it = list.iterator();
        while(it.hasNext()) {  // 问迭代器, 有没有下一个元素
            Object o = it.next();
            System.out.println(o);
        }

        System.out.println("=========函数循环");
        Consumer c = new Consumer() {
            @Override
            public void accept(Object t) {
                System.out.println("---" + t);
            }
        };
        list.forEach(c);

    }

}
